 ##########################################################
# 参数：
# arr: 一个数组
# start_index: 搜索的起点索引
# 返回值：
# 最后一个与arr[start_index]的值相等的元素索引
# 例: 如果arr = [6,6,7,7,7]，则find_last_of(arr, 2) == 4
##########################################################
def find_last_of(arr,sta):
    for i in range(sta,len(arr)):
        print(i)
        if(not arr[i]==arr[sta]):
            return i-1

#########################################################
# 参数：
# arr: 一个数组
# 返回值：
# 在find_last_of的帮助下返回一个压缩列表
# 例: 如果arr = [6, 6, 10, 7, 7, 7]，则compress(arr) == [[2, 6], 10, [3, 7]]
#########################################################
def compress(arr):
    iter=0
    long=(len(arr))
    con_num=0
    ans=[]
    while iter<long:
        con_num=find_last_of(arr,iter)
        if(con_num-iter==0):
            ans.append(arr[con_num])
        else:
            ans.append([con_num-iter+1,arr[con_num]])
        iter=con_num+1
    return(ans)

str = '1122334567775443'
a = [int(c) for c in str]
b = compress(a)
print(b)